Windows环境下grub安装

您所在的位置:网站首页 grub2 启动光盘命令 Windows环境下grub安装

Windows环境下grub安装

2023-11-18 01:06| 来源: 网络整理| 查看: 265

grub广泛用于多系统、U盘引导,这里我们探讨windows环境下grub的安装与使用。

**如果还有人在用xp系统,在启动项添加grub4dos十分方便,不必如此文这般麻烦**

前言:------------------------------------------------------------可略过------------------------------------------------

首先提一下硬盘的分区格式与与其对应的引导方式:

传统MBR分区特点:

1.最大支持2TB硬盘

2.最大支持4个分区(linux下识别为sdx1~4)

3.使用扩展分区再分逻辑分区可以突破4个分区的限制,即可以分配3个主分区和一个扩展分区,扩展分区再分配多个逻辑分区(在linux下第一个逻辑分区为sdx5)

针对MBR分区的缺点,更新一代的GPT分区有如下特点:

1.支持大容量硬盘以及更多的分区

2.相应的对较早时间的操作系统支持并不是很友好

我们作为使用者简单的看引导问题,最直观的表现进bios看主板是否支持UEFI启动,启动情况通常又分以下两种情况:(深了不敢说,要脸(/▽\))

1.较旧型号的主板不支持UEFI启动以及主板开启legacy启动选项(多数主板的名称)的,我们可以采用bios+MBR硬盘进行系统引导

2.使用”UEFI ONLY“或者“混合”启动的,我们可以使用UEFI+GPT硬盘进行系统引导

如何鉴别我们的系统硬盘采用何种分区方式,我们以系统自带的工具为例:

1.在windows系统下打开”磁盘管理“,打开方式:(win7及以后,点击左下角windows图标)/windows键+r 输入“diskmgmt.msc";“我的电脑/计算机/此电脑”右键“管理”->左侧找到“存储”下的“磁盘管理”鼠标左键单击。

2.系统所在硬盘(如:磁盘 0)右键->属性->卷->硬盘分区形式 ,GUID分区表(GPT) 或 主启动记录(MBR)

另:在”磁盘管理“中可见系统所在硬盘如果存在“EFI系统分区”则直接可以确定使用GPT分区

当然也可使用第三方工具如aida64/everest、diskgenius等

--------------------------------------------------------------------------------------------------------------------------

确定了系统启动方式,我们可选择用何种方式安装grub;对于存在多硬盘的计算机而言我们也可以将grub安装到其他硬盘然后通过切换启动磁盘顺序达到grub引导的目的。

以下内容我们以主硬盘安装分两种情况说明:

一、使用windows的引导项添加grub4dos启动

准备工具:grub4dos

特点:不破坏windows默认引导程序,方便后期删改;缺点是需要等待windows引导过程耗时长

步骤(以安装到c盘为例):

1.使用管理员账号启动命令行提示符(开始 -> 输入cmd->右键“以管理员身份运行”,其他方法也多次用到)

2.运行如下命令:

bcdedit /create /d "Grub For DOS" /application bootsector

后会出现标识符如 {90e14995-d284-11de-a325-a4ab4deca1b7}

bcdedit /set {标识符} device partition=C:

bcdedit /set {标识符} path \grldr.mbr

bcdedit /displayorder {标识符} /addlast

3.复制grub4dos中grldr及grldr.mbr至C盘根目录

4.使用记事本创建menu.lst文件(注意保存类型选择所有文件而不是默认的文本文件,否则扩展名自动添加txt)

示例(内容不包括前后`):

```

timeout 5

default 0

title MyRetroarch-0.1

root=(hd0,1)

kernel /myretro/boot/vmlinuz

initrd /myretro/boot/initrfs.img

```

:上面所述(hd0,1)表示计算机的第一块磁盘的第二个分区!!

二、安装grub2

工具:从grub官网http://ftp.gnu.org/gnu/grub/下载最新版grub-2.xx-for-windows.zip

特点:引导迅速,配置灵活,比较上面一种情况不依赖于windows系统

作为一个实用主义者,这里只讨论最基本的可用性的问题,美化等方面不会涉及。

针对两种分区类型分别说明

I、mbr分区

**以下安装过程会覆盖掉原有的引导信息,故而安装完成重启系统后会直接使用新安装的grub2进行系统引导,故而其配置需要谨慎,防止不能正常进入系统。**

win7之后的系统在全新安装后默认会分配一个叫做“系统保留”的分区作为引导分区,我们将grub2也安装至此分区。

***特别提醒有一些计算机从低版本系统升级过来没有该分区,可忽略掉下面分配盘符的步骤。

准备工作:为“系统保留”分区分配盘符(“磁盘管理”->“系统保留”分区上右键->“更改驱动器号和路径”->添加),之后我d盘为例(注意其中文件为隐藏的系统文件,如需查看其中文件内容需要“显示隐藏文件“和去掉勾选“隐藏受保护的操作系统文件”)

步骤:

1.解压缩grub-2.xx-for-windows.zip到c盘根目录

2.以管理员权限打开命令提示符

3.输入如下命令列出本地磁盘信息

wmic diskdrive list brief

可见我们要安装的目标通常为本地第一块磁盘即为\\.\PHYSICALDRIVE0这条;以此方法安装u盘启动引导则需要注意在后续安装过程中会用到,如我的移动磁盘为\\.\PHYSICALDRIVE2。

4.输入如下三条命令

cd \

cd grub2-2.xx-for-windows //注意此处2.xx替换成grub版本号,可以用tab键直接补全

grub-install.exe --boot-directory=d: \\.\PHYSICALDRIVE0

说明一下:这里隐含了一条默认参数--target=i386-pc;“--boot-directory=d:”这里的d为刚才我分配的“系统保留”分区的盘符,注意按照实际情况修改;另外可以选择性添加--modules=""参数用来指定需要安装的模块,如--modules="ntfs ext2 part_msdos cpio"等等,非专业用户推荐使用默认的全部安装。

5.打开“系统保留”分区下的grub文件夹,在其中创建一个名为grub.cfg的文本文件配置系统启动文件(使用notepad注意扩展名问题)

示例(已验证下面的win7条目与win10完全通用,注意不含`):

```

set timeout=5

set default=0

insmod part_msdos

insmod ntfs

insmod all_video

menuentry "Windows 7" {

search --file --set=root --no-floppy /Boot/zh-CN/bootmgr.exe.mui

chainloader +1

}

menuentry "MyRetroarch-0.1" {

search --file --set=root --no-floppy /myretro/boot/vmlinuz

linux /myretro/boot/vmlinuz

initrd /myretro/boot/initrfs.img

}

```

6.重启测试是否正常引导,如因grub.cfg输入有误造成的不能引导可尝试手动输入命令引导系统。

set root=(hd0,msdos1)         //设置第一块硬盘的mbr第一个分区(“系统保留”分区,grub2的第一个分区编号为1)为当前分区,与上面的search语句同样意思

chainloader +1

boot

收尾工作:删除“系统保留”分区的盘符(“磁盘管理”->“系统保留”分区上右键->“更改驱动器号和路径”->点击之前选择分配的盘符,按删除->是->是);删除解压缩的grub-2.xx-for-windows文件夹。

II. gpt分区

通常采用gpt分区安装系统默认会分一个efi分区用于安装启动文件,本质上是一个fat32格式分区。我们通过“磁盘管理”不能对其分配盘符,我们可以使用系统自带的diskpart工具对其操作,或者可以借助第三方工具。(第三方工具diskgenius操作:找到esp分区,右键->指派新的驱动器号(盘符);选择相应的盘符,确定)

使用diskpart为EFI分区分配盘符:

以管理员身份运行命令提示符,命令如下

a. 分配盘符

diskpart

list disk //查看当前磁盘信息

select disk 0 //使用第一块磁盘

list part //查看当前磁盘的分区信息

EFI分区通常位于第二分区,其类型为“系统”

select part 2

assign letter=f //此处我为其分配f盘

exit //退出

b. 取消分配盘符

diskpart

select disk 0

select part 2

remove letter=f

exit

下面以我的EFI分区为F盘为例,首先确保已经为EFI分区分配盘符,然后进行的grub的安装步骤:

1.解压缩grub-2.xx-for-windows.zip到c盘根目录

2.以管理员权限打开命令提示符

3.输入如下命令列出本地磁盘信息

wmic diskdrive list brief

查看输出确定安装磁盘

4.输入如下三条命令

cd \

cd grub2-2.xx-for-windows //注意此处2.xx替换成grub版本号

grub-install.exe --target=x86_64-efi --efi-directory=f: --boot-directory=f:/EFI \\.\PHYSICALDRIVE0      //注意此处的f替换成相应的efi分区盘符

执行完这三条命令后会在f盘的EFI文件夹下生成grub文件夹

5.同上述mbr安装过程一样,在grub文件夹根目录下创建grub.cfg文件。

一般用户会存在打开分区有权限要求的问题(好像只有administrator账户不会有此提示),百度一圈大部分都不是真正解决问题的方法,我的理解是不用去找安全选项卡,因为efi分区本质上是fat32格式,而fat32分区不支持安全选项,这里我分享的方法是使用命令行:(使用diskgenius操作更简单,随便找个地方创建文件,塞到相应目录)

1). 首先用管理员权限打开命令提示符,确保已经给EFI分区分配盘符(以下以F盘为例)

2). 输入命令:

f:

cd EFI\grub

notepad grub.cfg //这里如果grub.cfg文件存在则直接打开,如不存在会有提示是否创建

输入内容后默认路径正常保存退出即可

grub.cfg示例(已验证下面的win7条目与win10完全通用,注意不含`):

```

set timeout=5

set default=0

insmod part_gpt

insmod ntfs

insmod all_video

menuentry 'Windows 10' {

search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi

chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi

}

menuentry "MyRetroarch-0.1" {

search --file --set=root --no-floppy /myretro/boot/vmlinuz

linux /myretro/boot/vmlinuz

initrd /myretro/boot/initrfs.img

}

```

6.重启,进入bios,更改启动项顺序将grub置顶,启动验证是否正常运行

收尾工作就是在正常引导windows后删除ESP分区的盘符,使用第三方工具也是如此。

BTW: 如果使用grub2做efi启动U盘,grub-install的参数需要加上--removable,此参数仅支持efi格式的安装!!

--------------------------------------------------------------------------------------------------------------------------

以上就是我对windows环境下安装与使用grub的心得体会,全部实际验证过,安装过程中碰到的一些小问题也分享了我的解决办法,欢迎一起探讨!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3